import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Num5 {
    public static String longestPalindrome(String s) {
        if (s.length() < 1) return s;

        String res = "";
        Map<Character, List<Integer>> indexMap = new HashMap<>();

        for (int i = 0; i < s.length(); i++) {
            if (indexMap.containsKey(s.charAt(i))){
                for (Integer leftIndex : indexMap.get(s.charAt(i))) {
                    String temp = s.substring(leftIndex, i + 1);
                    if (new StringBuilder(temp).reverse().toString().equals(temp)){
                        res = res.length() > i - leftIndex + 1 ? res : s.substring(leftIndex, i + 1);
                        break;
                    }
                }

                indexMap.get(s.charAt(i)).add(i);
            } else {
                List<Integer> indexList = new ArrayList<>();
                indexList.add(i);
                indexMap.put(s.charAt(i), indexList);
            }
        }

        return res.equals("") ? s.substring(0, 1) : res;
    }
}
